package com.baoyouqun.controller.back;

import com.alibaba.cola.dto.Response;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baoyouqun.base.PageResponse;
import com.baoyouqun.domain.Query.AdminDemandQuery;
import com.baoyouqun.domain.VO.DemandVO;
import com.baoyouqun.service.DemandService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.*;

/**
 * 后台管理-已发布帖子：接口控制器
 * 提供分页查询和Excel导出接口，对应页面“已发布帖子”模块
 */
@RestController
@RequestMapping("/admin/demand")
public class AdminDemandController {

    
    @Resource
    private DemandService demandService;

    /**
     * 已发布帖子：条件分页查询
     * 用于页面表格数据加载，支持关键词、分类、时间等多条件筛选
     *
     * @param query 筛选条件+分页参数（JSON格式，如current=1&size=10&keyWord=办公设备）
     * @return SingleResponse<IPage < DemandVO>> 分页VO结果（含总条数、当前页数据）
     */
    @GetMapping("/page")
    public PageResponse<DemandVO> pageAdminDemand(AdminDemandQuery query) {
        IPage<DemandVO> page = demandService.pageAdminDemand(query);
        return PageResponse.of(page.getRecords(), page.getTotal(), page.getCurrent(), page.getSize());

    }

    /**
     * 已发布帖子：POI导出Excel
     * 用于页面“导出表格”按钮，支持按当前筛选条件导出全量数据
     *
     * @param query    筛选条件（可选，JSON格式，与分页查询共用）
     * @param response Http响应对象（输出Excel流，触发浏览器下载）
     */
    @RequestMapping("/export")
    public void exportAdminDemandExcel(AdminDemandQuery query, HttpServletResponse response) {
        demandService.exportAdminDemandExcel(query, response);
    }

    /**
     * 帖子刷新（置顶）
     * 功能：更新帖子发布时间为当前时间，使其在列表中排序靠前
     *
     * @param demandId 帖子ID（路径参数，必填）
     * @return Response 操作结果（成功/失败信息）
     */
    @PostMapping("/refresh/{demandId}")
    public Response refreshDemand(@PathVariable("demandId") String demandId) {
        return demandService.refreshDemand(demandId);
    }

    /**
     * 帖子下架
     * 功能：将帖子状态更新为-1（下架），前台不再展示
     *
     * @param demandId 帖子ID（路径参数，必填）
     * @return Response 操作结果（成功/失败信息）
     */
    @PostMapping("/take-off/{demandId}")
    public Response takeOffDemand(@PathVariable("demandId") String demandId) {
        return demandService.takeOffDemand(demandId);
    }

    /**
     * 帖子上架
     * 功能：将帖子状态更新为1（下架），前台不再展示
     *
     * @param demandId 帖子ID（路径参数，必填）
     * @return Response 操作结果（成功/失败信息）
     */
    @PostMapping("/take-on/{demandId}")
    public Response takeOnDemand(@PathVariable("demandId") String demandId) {
        return demandService.takeOnDemand(demandId);
    }
}